package com.sunwayhorizo.health.common;

import java.lang.reflect.InvocationTargetException;
import java.util.List;

import com.sunwayhorizo.health.business.dto.DictionaryDTO;
import com.sunwayhorizo.health.business.dto.patad.empi.MedicalCardDTO;
import com.sunwayhorizo.health.business.dto.patad.empi.PatientBaseInfoDTO;
import com.sunwayhorizo.health.business.dto.patad.encounter.InDepartmentDTO;
import com.sunwayhorizo.health.business.dto.patad.encounter.InHospitalDTO;
import com.sunwayhorizo.health.business.dto.patad.encounter.PatientEncounterDTO;
import com.sunwayhorizo.health.business.dto.registries.EntitysDTO;
import com.sunwayhorizo.health.business.dto.registries.OrganizationDTO;
import com.sunwayhorizo.health.business.dto.registries.ThreeLevelsPhysicianDTO;

public class Hl7NullRemover
{

    // public static void removeHl7Null(Object obj) throws
    // IllegalArgumentException, IllegalAccessException,
    // InvocationTargetException, SecurityException, NoSuchMethodException{
    // Method[] methods=obj.getClass().getMethods();
    // for(int i=0;i<methods.length;i++){
    // String returnName=methods[i].getReturnType().getSimpleName();
    // if(("String".equals(returnName))&&(!"toString".equals(methods[i].getName()))){
    // String result=(String)methods[i].invoke(obj);
    // StringBuffer str=new StringBuffer();
    // str.append("set");
    // str.append(methods[i].getName().substring(3));
    // if( "<Null:NI>".equals(result)||"<Null:NullFlavor: NI>".equals(result)){
    // String str4="";
    // obj.getClass().getDeclaredMethod(str.toString(),new
    // Class[]{String.class})
    // .invoke(obj,str4);
    // }
    // }
    // if (returnName.endsWith("DTO")){
    // removeHl7Null(methods[i].invoke(obj));
    // }
    // }
    // }

    public static void removeHl7Null(EntitysDTO dto)
    {
        removeHl7Null(dto.getPatientBaseInfo());
        removeHl7Null(dto.getListMedicalCard());
        // removeHl7Null(dto.getListInsurance());
        removeHl7Null(dto.getOrganization());

        // removeHl7Null(dto.getListHome());
    }


    public static void removeHl7Null(OrganizationDTO dto)
    {
        if ("<Null:NullFlavor: NI>".equals(dto.getContactTel()) || "<Null:NI>".equals(dto.getContactTel()))
        {
            dto.setContactTel("");
        }
        if ("<Null:NullFlavor: NI>".equals(dto.getOrgAddress()) || "<Null:NI>".equals(dto.getOrgAddress()))
        {
            dto.setOrgAddress("");
        }
        if ("<Null:NullFlavor: NI>".equals(dto.getOrgTel()) || "<Null:NI>".equals(dto.getOrgTel()))
        {
            dto.setOrgTel("");
        }
        if ("<Null:NullFlavor: NI>".equals(dto.getOrgName()) || "<Null:NI>".equals(dto.getOrgName()))
        {
            dto.setOrgName("");
        }
        if ("<Null:NullFlavor: NI>".equals(dto.getOrgZip()) || "<Null:NI>".equals(dto.getOrgZip()))
        {
            dto.setOrgZip("");
        }

    }


    public static void removeHl7Null(List<MedicalCardDTO> listMedicalCard)
    {
        if (listMedicalCard == null)
        {
            return;
        }
        for (MedicalCardDTO dto : listMedicalCard)
        {
            removeHl7Null(dto);
        }

    }


    public static void removeHl7Null(MedicalCardDTO dto)
    {
        if ("<Null:NullFlavor: NI>".equals(dto.getOffice()) || "<Null:NI>".equals(dto.getOffice()))
        {
            dto.setOffice("");
        }

        if ("<Null:NullFlavor: NI>".equals(dto.getState()) || "<Null:NI>".equals(dto.getState()))
        {
            dto.setState("");
        }
        if ("<Null:NullFlavor: NI>".equals(dto.getId())

        || "<Null:NI>".equals(dto.getId()))
        {
            dto.setId("");
        }
        removeHl7Null(dto.getTypeDic());

    }


    public static void removeHl7Null(InHospitalDTO dto) throws IllegalArgumentException, IllegalAccessException, ClassNotFoundException,
        InvocationTargetException, InstantiationException, SecurityException, NoSuchMethodException
    {
        // Method[] methods=dto.getClass().getDeclaredMethods();
        // for(int i=0;i<methods.length;i++){
        // if("String".equals(methods[i].getReturnType())){
        // String
        // result=(String)methods[i].invoke(dto.getClass().newInstance());
        // StringBuilder str=new StringBuilder();
        // str.append("set");
        // str.append(methods[i].getName().substring(3));
        // if("<Null:NullFlavor: NI>".equals(result)
        // || "<Null:NI>".equals(result)){
        // dto.getClass().getDeclaredMethod(str.toString(),new
        // Class[]{String.class})
        // .invoke(dto.getClass().newInstance(),new Object[]{""});
        // }
        // }
        //
        // }
        //
        // InHospitalDTO.class.getDeclaredMethods();
        // InHospitalDTO.class.getName();

        // hospitalizationNO
        if ("<Null:NullFlavor: NI>".equals(dto.getHospitalizationNO()) || "<Null:NI>".equals(dto.getHospitalizationNO()))
        {
            dto.setHospitalizationNO("");
        }
        // encounterNum
        if ("<Null:NullFlavor: NI>".equals(dto.getEncounterNum()) || "<Null:NI>".equals(dto.getEncounterNum()))
        {
            dto.setEncounterNum("");
        }
        // roleID
        if ("<Null:NullFlavor: NI>".equals(dto.getRoleID()) || "<Null:NI>".equals(dto.getRoleID()))
        {
            dto.setRoleID("");
        }
        // deptName
        if ("<Null:NullFlavor: NI>".equals(dto.getDeptName()) || "<Null:NI>".equals(dto.getDeptName()))
        {
            dto.setDeptName("");
        }
        // diagnoseId
        if ("<Null:NullFlavor: NI>".equals(dto.getDiagnoseId()) || "<Null:NI>".equals(dto.getDiagnoseId()))
        {
            dto.setDiagnoseId("");
        }
        // DictionaryDTO outPatDiagnose
        // doctorId
        if ("<Null:NullFlavor: NI>".equals(dto.getDoctorId()) || "<Null:NI>".equals(dto.getDoctorId()))
        {
            dto.setDoctorId("");
        }
        // doctorName
        if ("<Null:NullFlavor: NI>".equals(dto.getDoctorName()) || "<Null:NI>".equals(dto.getDoctorName()))
        {
            dto.setDoctorName("");
        }
        // admissionWay
        if ("<Null:NullFlavor: NI>".equals(dto.getAdmissionWay()) || "<Null:NI>".equals(dto.getAdmissionWay()))
        {
            dto.setAdmissionWay("");
        }
        // admissionPurpose
        if ("<Null:NullFlavor: NI>".equals(dto.getAdmissionPurpose()) || "<Null:NI>".equals(dto.getAdmissionPurpose()))
        {
            dto.setAdmissionPurpose("");
        }
        // admissionTime
        if ("<Null:NullFlavor: NI>".equals(dto.getAdmissionTime()) || "<Null:NI>".equals(dto.getAdmissionTime()))
        {
            dto.setAdmissionTime("");
        }
        // linkMan
        if ("<Null:NullFlavor: NI>".equals(dto.getLinkMan()) || "<Null:NI>".equals(dto.getLinkMan()))
        {
            dto.setLinkMan("");
        }
        // linkManWay
        if ("<Null:NullFlavor: NI>".equals(dto.getLinkManWay()) || "<Null:NI>".equals(dto.getLinkManWay()))
        {
            dto.setLinkManWay("");
        }
        // linkManRelation
        if ("<Null:NullFlavor: NI>".equals(dto.getLinkManRelation()) || "<Null:NI>".equals(dto.getLinkManRelation()))
        {
            dto.setLinkManRelation("");
        }
        // leaveHospitalWay
        if ("<Null:NullFlavor: NI>".equals(dto.getLeaveHospitalWay()) || "<Null:NI>".equals(dto.getLeaveHospitalWay()))
        {
            dto.setLeaveHospitalWay("");
        }
        // leaveHospitalTime
        if ("<Null:NullFlavor: NI>".equals(dto.getLeaveHospitalTime()) || "<Null:NI>".equals(dto.getLeaveHospitalTime()))
        {
            dto.setLeaveHospitalTime("");
        }
        removeHl7Null(dto.getOutPatDiagnose());
    }


    public static void removeHl7Null(PatientEncounterDTO dto)
    {
        if ("<Null:NullFlavor: NI>".equals(dto.getCardId()) || "<Null:NI>".equals(dto.getCardId()))
        {
            dto.setCardId("");
        }

        if ("<Null:NullFlavor: NI>".equals(dto.getEncounterID()) || "<Null:NI>".equals(dto.getEncounterID()))
        {
            dto.setEncounterID("");
        }

        if ("<Null:NullFlavor: NI>".equals(dto.getInsuranceId()) || "<Null:NI>".equals(dto.getInsuranceId()))
        {
            dto.setInsuranceId("");
        }

        if ("<Null:NullFlavor: NI>".equals(dto.getMedicalCardId()) || "<Null:NI>".equals(dto.getMedicalCardId()))
        {
            dto.setMedicalCardId("");
        }

        if ("<Null:NullFlavor: NI>".equals(dto.getEncounterType()) || "<Null:NI>".equals(dto.getEncounterType()))
        {
            dto.setEncounterType("");
        }
        removeHl7Null(dto.getCardTypeDic());
        removeHl7Null(dto.getChargeTypeDic());
        removeHl7Null(dto.getInsuranceTypeDic());
        removeHl7Null(dto.getMedicalCardTypeDic());
        removeHl7Null(dto.getOutpat_diagose());
        removeHl7Null(dto.getInDepartment());
        // removeHl7Null(dto.getInHospitalDTO());
        removeHl7Null(dto.getPatientBaseInfoDTO());
    }


    public static void removeHl7Null(DictionaryDTO dto)
    {
        if (dto == null)
        {
            return;
        }
        if ("<Null:NullFlavor: NI>".equals(dto.getCodingschemeChName()) || "<Null:NI>".equals(dto.getCodingschemeChName()))
        {
            dto.setCodingschemeChName("");
        }
        if ("<Null:NullFlavor: NI>".equals(dto.getCodingschemeEnName()) || "<Null:NI>".equals(dto.getCodingschemeEnName()))
        {
            dto.setCodingschemeEnName("");
        }
        if ("<Null:NullFlavor: NI>".equals(dto.getConceptCode()) || "<Null:NI>".equals(dto.getConceptCode()))
        {
            dto.setConceptCode("");
        }
        if ("<Null:NullFlavor: NI>".equals(dto.getConceptName()) || "<Null:NI>".equals(dto.getConceptName()))
        {
            dto.setConceptName("");
        }
        if ("<Null:NullFlavor: NI>".equals(dto.getCodingschemeOid()) || "<Null:NI>".equals(dto.getCodingschemeOid()))
        {
            dto.setCodingschemeOid("");
        }

    }


    public static void removeHl7Null(PatientBaseInfoDTO dto)
    {

        if ("<Null:NullFlavor: NI>".equals(dto.getMarryFlag()) || "<Null:NI>".equals(dto.getMarryFlag()))
        {
            dto.setMarryFlag("");
        }
        if ("<Null:NullFlavor: NI>".equals(dto.getNativePlace()) || "<Null:NI>".equals(dto.getNativePlace()))
        {
            dto.setNativePlace("");
        }
        if ("<Null:NullFlavor: NI>".equals(dto.getNatureAge()) || "<Null:NI>".equals(dto.getNatureAge()))
        {
            dto.setNatureAge("");
        }
        if ("<Null:NullFlavor: NI>".equals(dto.getNatureBirthdate()) || "<Null:NI>".equals(dto.getNatureBirthdate()))
        {
            dto.setNatureBirthdate("");
        }
        if ("<Null:NullFlavor: NI>".equals(dto.getNatureId()) || "<Null:NI>".equals(dto.getNatureId()))
        {
            dto.setNatureId("");
        }
        if ("<Null:NullFlavor: NI>".equals(dto.getNatureName()) || "<Null:NI>".equals(dto.getNatureName()))
        {
            dto.setNatureName("");
        }
        if ("<Null:NullFlavor: NI>".equals(dto.getPersonId()) || "<Null:NI>".equals(dto.getPersonId()))
        {
            dto.setPersonId("");
        }
        if ("<Null:NullFlavor: NI>".equals(dto.getSocietyEmail()) || "<Null:NI>".equals(dto.getSocietyEmail()))
        {
            dto.setSocietyEmail("");
        }
        if ("<Null:NullFlavor: NI>".equals(dto.getSocietyHomeAddress()) || "<Null:NI>".equals(dto.getSocietyHomeAddress()))
        {
            dto.setSocietyHomeAddress("");
        }
        if ("<Null:NullFlavor: NI>".equals(dto.getSocietyHomeCode()) || "<Null:NI>".equals(dto.getSocietyHomeCode()))
        {
            dto.setSocietyHomeCode("");
        }
        if ("<Null:NullFlavor: NI>".equals(dto.getSocietyMobile()) || "<Null:NI>".equals(dto.getSocietyMobile()))
        {
            dto.setSocietyMobile("");
        }
        if ("<Null:NullFlavor: NI>".equals(dto.getSocietyPhone()) || "<Null:NI>".equals(dto.getSocietyPhone()))
        {
            dto.setSocietyPhone("");
        }
        removeHl7Null(dto.getDutyDic());
        removeHl7Null(dto.getMerryFlagDic());
        removeHl7Null(dto.getNatureIdentityDic());
        removeHl7Null(dto.getNatureNationalityDic());
        removeHl7Null(dto.getNatureNationDic());
        removeHl7Null(dto.getNatureSexDic());
        removeHl7Null(dto.getTitleDic());
        removeHl7Null(dto.getSocietyWorkDic());

    }


    public static void removeHl7Null(InDepartmentDTO dto)
    {
        if ("<Null:NullFlavor: NI>".equals(dto.getAdmissionTime()) || "<Null:NI>".equals(dto.getAdmissionTime()))
        {
            dto.setAdmissionTime("");
        }
        if ("<Null:NullFlavor: NI>".equals(dto.getBedNO()) || "<Null:NI>".equals(dto.getBedNO()))
        {
            dto.setBedNO("");
        }
        if ("<Null:NullFlavor: NI>".equals(dto.getBedRoleID()) || "<Null:NI>".equals(dto.getBedRoleID()))
        {
            dto.setBedRoleID("");
        }
        if ("<Null:NullFlavor: NI>".equals(dto.getDoctorId()) || "<Null:NI>".equals(dto.getDoctorId()))
        {
            dto.setDoctorId("");
        }
        if ("<Null:NullFlavor: NI>".equals(dto.getRoomNO()) || "<Null:NI>".equals(dto.getRoomNO()))
        {
            dto.setRoomNO("");
        }
        if ("<Null:NullFlavor: NI>".equals(dto.getWorkGroupId()) || "<Null:NI>".equals(dto.getWorkGroupId()))
        {
            dto.setWorkGroupId("");
        }

        removeHl7Null(dto.getThreeLevelsPhysicianDTO());
    }


    public static void removeHl7Null(ThreeLevelsPhysicianDTO dto)
    {
        if (dto == null)
        {
            return;
        }
        if ("<Null:NullFlavor: NI>".equals(dto.getAttendingPhysicianId()) || "<Null:NI>".equals(dto.getAttendingPhysicianId()))
        {
            dto.setAttendingPhysicianId("");
        }
        if ("<Null:NullFlavor: NI>".equals(dto.getAttendingPhysicianName()) || "<Null:NI>".equals(dto.getAttendingPhysicianName()))
        {
            dto.setAttendingPhysicianName("");
        }
        if ("<Null:NullFlavor: NI>".equals(dto.getChiefDoctorId()) || "<Null:NI>".equals(dto.getChiefDoctorId()))
        {
            dto.setChiefDoctorId("");
        }
        if ("<Null:NullFlavor: NI>".equals(dto.getChiefDoctorName()) || "<Null:NI>".equals(dto.getChiefDoctorName()))
        {
            dto.setChiefDoctorName("");
        }
        if ("<Null:NullFlavor: NI>".equals(dto.getDoctorId()) || "<Null:NI>".equals(dto.getDoctorId()))
        {
            dto.setDoctorId("");
        }
        if ("<Null:NullFlavor: NI>".equals(dto.getDoctorName()) || "<Null:NI>".equals(dto.getDoctorName()))
        {
            dto.setDoctorName("");
        }
        /*
         * if ("<Null:NullFlavor: NI>".equals(dto.getMedicalTeamId()) ||
         * "<Null:NI>".equals(dto.getMedicalTeamId())) {
         * dto.setMedicalTeamId(""); }
         * 
         * if ("<Null:NullFlavor: NI>".equals(dto.getMedicalTeamName()) ||
         * "<Null:NI>".equals(dto.getMedicalTeamName())) {
         * dto.setMedicalTeamName(""); }
         * 
         * if ("<Null:NullFlavor: NI>".equals(dto.getThreeLevelsPhysicianId())
         * || "<Null:NI>".equals(dto.getThreeLevelsPhysicianId())) {
         * dto.setThreeLevelsPhysicianId(""); }
         * 
         * if ("<Null:NullFlavor: NI>".equals(dto.getWorkgroupId()) ||
         * "<Null:NI>".equals(dto.getWorkgroupId())) { dto.setWorkgroupId(""); }
         * if ("<Null:NullFlavor: NI>".equals(dto.getWorkgroupName()) ||
         * "<Null:NI>".equals(dto.getWorkgroupName())) {
         * dto.setWorkgroupName(""); }
         */
    }
}
